<?php
namespace app\install\controller;
use think\Controller;
use think\Db;
class Install extends Controller
{
    protected function _initialize()
    {
        if(is_file(APP_PATH.'database.php'))
        {
        return '已经安装过程序，为了安全请删除install目录';
        }
    }
    #step1数据表验证和创建    
    public function step1($db = null, $admin = null)
    {
        if($this->request->isPost())
        {
            //检测管理员信息
           if(!is_array($admin) || empty($admin[0]) || empty($admin[1]) || empty($admin[3]))
           {
                $this->error('请填写完整管理员信息');
            }
             else if($admin[1] != $admin[2])
            {
                $this->error('确认密码和密码不一致');
            }
            else
            {
                $info = array();
                list($info['username'], $info['password'], $info['repassword'], $info['email'])
                = $admin;
                //缓存管理员信息
                session('admin_info', $info);
            }
            //检测数据库配置
            if(!is_array($db) || empty($db[0]) ||  empty($db[1]) || empty($db[2]) || empty($db[3]))
            {
                $this->error('请填写完整的数据库配置');
            }
            else
            {
                $DB = array();
                list($DB['type'], $DB['hostname'], $DB['database'], $DB['username'], $DB['password'],
                     $DB['hostport'], $DB['prefix']) = $db;
                //缓存数据库配置
                session('db_config', $DB);

                //创建数据库
               $dbname = $DB['database'];
                unset($DB['database']);
                $db = Db::connect($DB);//Db::getInstance($DB);
                #查找数据库是否存在，如果不存在则进行创建
                $sql = "CREATE DATABASE IF NOT EXISTS `{$dbname}` DEFAULT CHARACTER SET utf8";
                #尝试执行创建
                if($db->execute($sql))
                {
                    session('step',1);
                    $this->redirect('step2');
                }
                else
                { 
                    #创建失败表示可能已经存在，执行创建数据表
                    session('step',1);
                    $this->redirect('step2');
                }
                
            }
        }
        else
        {
                return $this->fetch();
        }
    }
    public function step2()
    {
        if (session('step') !=1)
        {
           $this->redirect('step1');
        }
        else
        {
            #连接数据表
            $dbconfig = session('db_config');
            $db = Db::connect($dbconfig);
            #创建数据表
            create_tables($db, $dbconfig['prefix']);
            #注册管理员账户信息
            $admin = session('admin_info');
            register_admin($db, $dbconfig['prefix'],$admin);
            #写入配置文件
            write_config($dbconfig);
            session('step',2);
            $this->redirect('Index/complate');
        }
    }

}
